package com.cuixichang.minimalism.service;

import com.cuixichang.minimalism.transfer.dto.IMenuDTO;
import com.cuixichang.minimalism.transfer.po.IMenu;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.List;
import java.util.function.BiConsumer;
import java.util.function.Function;
/**
 * 系统菜单表服务接口
 *
 * @author cuixichang
 * @date 2024-12-18
 */
public interface IMenuService{

    IMenuDTO selectById(Long id);

    IMenuDTO selectOne(IMenuDTO iMenuDTO);

    List<IMenuDTO> selectByIds(List<Long> ids);

    List<IMenuDTO> selectList(IMenuDTO iMenuDTO);

    List<IMenuDTO> selectList(IMenuDTO iMenuDTO, BiConsumer<IMenu, QueryWrapper<IMenu>> consumer);

    Page<IMenuDTO> selectPage(IMenuDTO iMenuDTO, long pageSize, long pageNo);

    Page<IMenuDTO> selectPage(IMenuDTO iMenuDTO, long pageSize, long pageNo, BiConsumer<IMenu, QueryWrapper<IMenu>> consumer);

    int deleteById(Long id);

    int deleteByIds(List<Long> ids);

    int deleteByCondition(IMenuDTO iMenuDTO);

    int deleteByCondition(IMenuDTO iMenuDTO, BiConsumer<IMenu, QueryWrapper<IMenu>> consumer);

    IMenuDTO insert(IMenuDTO iMenuDTO);

    IMenuDTO insertHasOption(IMenuDTO iMenuDTO, Function<IMenuDTO,IMenuDTO> preOption);

    int updateById(IMenuDTO iMenuDTO);

    int updateById(IMenuDTO iMenuDTO, BiConsumer<IMenu, UpdateWrapper<IMenu>> consumer);
}